package com.example.demo.utils;

import com.example.demo.enums.Constant;

import javax.xml.transform.Result;
import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据实体类
 * @author zjj
 * @date 2021-04-21
 */
public class ResultUtils extends HashMap<String,Object> {

    /**
     * 工具类
     * @param map 集合
     * @return 集合
     */
    public ResultUtils mergeMap(Map<String,Object> map){
//        keySet()获取map集合中的key集合，
        for(String key:map.keySet()){
            Object value = map.get(key);
//            super继承父类方法，必须要求为静态的static
            super.put(key,value);
        }
        return this;
    }

    /**
     * 返回一个自身的集合，集合中带有一个code为0的结果
     */
    public ResultUtils(){
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("code","0");
        mergeMap(map);
    }

    /**
     * 返回一个集合
     * @param code 错误码
     * @param msg 错误信息
     */
    public ResultUtils(String code,String msg){
        puts("code",code);
        puts("msg",msg);
    }

    /**
     * 工具类
     * @param key 集合键
     * @param val 集合值
     * @return 集合
     */
    public ResultUtils puts(String key,String val){
        super.put(key,val);
        return this;
    }


    /**
     * 请求正确
     * @return 集合
     */
    public static ResultUtils ok(){
        return new ResultUtils(Constant.RESULT.CODE_YES.getValue(),Constant.RESULT.MSG_YES.getValue());
    }

    /**
     * 请求正确
     * @param msg 信息描述
     * @return 集合
     */
    public static ResultUtils ok(String msg){
        ResultUtils ru = new ResultUtils();
        ru.put("msg",msg);
        return ru;
    }

    /**
     * 请求正确
     * @param map 集合
     * @return 集合
     */
    public static ResultUtils ok(Map<String,Object> map){
        ResultUtils ru = new ResultUtils();
        ru.putAll(map);
        return ru;
    }

    public static ResultUtils error(){
        return new ResultUtils(Constant.RESULT.CODE_NO.getValue(),Constant.RESULT.MSG_NO.getValue());
    }
    public static ResultUtils error(String msg){
        return error(Constant.RESULT.CODE_NO.getValue(),msg);
    }
    public static ResultUtils error(String code,String msg){
        ResultUtils ru = new ResultUtils();
        ru.put("code",code);
        ru.put("msg",msg);
        return ru;
    }

    public ResultUtils put(String key,Object value){
        super.put(key,value);
        return this;
    }



}
